FIG. 1 shows a block diagram of an embodiment of a computer system 100. The computer system 100 includes two processors 110, 120. The processors 110, 120 may be any one of a variety of processors such as a central processing unit (CPU) or a graphics processing unit (GPU). For instance, they may be x86 microprocessors that implement x86 64-bit instruction set architecture and are used in desktops, laptops, servers, and superscalar computers, or they may be Advanced RISC (Reduced Instruction Set Computer) Machines (ARM) processors that are used in mobile phones or digital media players. Other embodiments of the processors are contemplated, such as Digital Signal Processors (DSP) that are particularly useful in the processing and implementation of algorithms related to digital signals, such as voice data and communication signals, and microcontrollers that are useful in consumer applications, such as printers and copy machines. Although the embodiment of FIG. 1 includes two processors for illustrative purposes, any other number of processors will be in-line with the described embodiment.
The processors 110, 120 of FIG. 1 may include one or more processor cores 115A-D, 125A-D that form the computational centers of the processors 110, 120 and are therefore responsible for performing a multitude of computational tasks that enable their respective processors 110, 120 to operate. The processor cores 115A-D, 125A-D may include execution units that perform additions, subtractions, and shifting and rotating of binary digits, among many other computations and may also include address generation and load and store units that perform address calculations for memory addresses and the loading and storing of data from memory. The collection of these operations performed by the processor cores 115A-D, 125A-D drives computer applications to run. In some embodiments, a core 115A may include two execution units and two address generation units. However, other embodiments are contemplated in which a core may only have one execution unit or one address generation unit.
As seen in FIG. 1, the processors 110, 120 are connected to a Northbridge 130 device through a processor bus 128. The Northbridge 130 device is part of the computer chipset, which may reside on a different socket than the processors 110, 120 along with a Southbridge device 150. The Northbridge 130 and the Southbridge 150 are connected via a peripheral bus 152 and are connected to system memory 140 via a memory bus 142. In some embodiments, the Northbridge 130 is referred to as a Memory Controller Hub (MCH) and the Southbridge 150 is referred to an Input/Output (I/O) Controller Hub (ICH). The Northbridge 130 and the Southbridge 150 contain logic that allows the processors 110, 120 to communicate with more hardware components. For instance the Northbridge 130 allows the processors 110, 120 to communicate with system memory 140, whereas the Southbridge allows the processors 110, 120 to communicate with peripherals through a Peripheral Component Interconnect (PCI) slot.
The processors 110, 120 of computer system 100 and their cores 115A-D, 125A-D consume electrical power during their operation. This is due to the fact that the transistors within the processors 110, 120 draw electrical current in their regular operation. Further, faster processors (with fast clock cycles) tend to consume more electrical energy in shorter periods of time than their slower counterparts because they require faster operation of electrical circuitry and therefore more consumption of electrical power. Due to their reliance on external power, processors 110, 120 and their processing cores 115A-D, 125A-D cannot operate under all conditions without performance failures. As an example, one type of Advanced Micro Devices (AMD) Phenom™ processor can operate at 2800 megahertz (MHz) and dissipate 140.8 watts of power, while requiring a voltage range of 1.225 to 1.425 volts and a maximum current draw of 102.5 amperes. Functional failures may occur when a processor operates at power, voltage, or current levels that are outside those for which it is designed. Further, power sources or supplies, such as batteries, are often slow to compensate and adjust their power supply to the needs of the processors.
One problem processor cores 115A-D, 125A-D may encounter in their operation is the di/dt problem. The di/dt problem refers to large changes in current draw or consumption by a processor core (e.g. 115A) over a short interval of time. The name di/dt is derived from the symbol for current, i, the symbol for time, t, and the derivative symbol, d, where di/dt represents the variation in current during an interval of time. These variations may cause oscillations in voltage supply and result in performance and functional failures, such as errors in running computer applications.
FIG. 2 shows an instance of a di/dt spike, or load step, as the problem will be referred to interchangeably herein, which occurs in a processor core (e.g. 115A) starting at the sixth clock cycle and lasting through the eighth clock cycle. The spike is due to a sudden need for current by the circuitry of the processor core. The need for current may be the result of abrupt computations that the core needs to perform, such as an application that suddenly requires a lot of computational effort to run, where the electrical circuitry, including transistors, requires much more current than before the application load. The supply voltage effect of the spike is seen in the corresponding voltage graph, where the current spike results in a voltage dip starting at cycle six. At the eighth cycle the voltage supply is below the operating voltage of the processor core. (Here, the operating voltage of the exemplary processor is 1.225 to 1.425 V). After the di/dt spike, the voltage is restored to a level within the operating voltage range.
In the embodiment of the computer system 100 of FIG. 1, the two processors 110, 120 may be connected in parallel to a voltage supply, where all the processor cores 115A-D, 125A-D share the same voltage supply. The processors 110, 120 may experience a voltage sag, or droop, as a result of a di/dt spike in any one of the processor cores 115A-D, 125A-D. The problem may be exacerbated when two or more processor cores 115A-D, 125A-D experience di/dt spikes at the same time. When di/dt spikes occur at the same time, or are in-phase, voltage droops are constructively compounded to result in a larger droop. However, when di/dt spikes occur in two or more processor cores at different times, or are out-of-phase, then voltage supply waves will propagate across the voltage supply grid. Power supplies are sometimes equipped with capacitance and inductance to limit the voltage fluctuations; however, the fluctuations often occur too fast for the voltage supply to adjust its supply.
Therefore, di/dt spikes by one or more processor cores may cause the power supply of a computer system 100 to become unstable. A computer's digital circuitry and logic may not operate properly under all conditions and computational failures will result in the event that operating conditions are violated. These computational failures will result in application and computer program errors that are experienced by a computer user. In extreme cases, terminal failures to the processor cores may occur that will damage the processors and cores.
Accordingly, it is desirable to have a method and apparatus to mitigate the di/dt problem. It is also desirable to have a method and apparatus to mitigate the di/dt problem while not having a significant impact on a computer system's performance.